const list = [1, 2, 3, 4, 5]

// 定义一个数组，该数组中只能放数字类型的数据
const list1: number[] = [1, 2, 3, 4, 5]

// 该代码不能将字符串类型的数据赋值给数字类型
// list1.push('2')

// 泛型写法
const list2: Array<number> = [1, 2, 3, 4, 5]


/*
    在 js 中 || 和 |
    || 是或者的意思，只要有一个条件成立，最终结果就是成立
    | 在计算机中我们叫做位运算
    
    1   2    3   4    5    6    7   8    9   10   11  十进制满 10 进 1
    1   10   11  100  101  110  111 1000   二进制 满 2 进 1

*/

// 定义数组中数据类型有多种的情况下可以使用 | 隔开
const list3: (string | number)[] = [1, 2, 3, '今天立冬']

// 定义多类型
const list4: Array<string | number> = [1, 2, 3, '今天立冬']


// 如果数组中放的是对象，我们可以使用该方法进行定义
// 这样写的话，会导致对象中，如果属性比较多的情况下，会非常麻烦
const list5: {
    name: string;
    age: number;
}[] = [
        {
            name: '张三丰',
            age: 18
        }, {
            name: '李四啊',
            age: 30
        }
    ]
list5[0].name



interface iUser {
    name: string;
    age: number
    sex?: any
}

// 正规写法
const list6: iUser[] = [
    {
        name: '张三',
        age: 18,
        sex: true
    }
]
const list7: Array<iUser> = [
    {
        name: '张三',
        age: 18,
        sex: true
    }
]


const list8: (string | number | boolean)[] = [1, '2', true]

// 定义一个类型
type tType = string | number | boolean | iUser
// 给数组添加一个类型
const list9: tType[] = [1, '2', true, 4, 2, 2, true, { name: '', age: 1 }]

